package 代码随想录_补充题目.字符串反转系列;

/**
 * @author zx
 * @create 2023-02-09 23:26
 */
public class 轮转数组_189 {
    /**
     * 代码随想录做法，但是感觉自己不容易想到
     */
    public void rotate(int[] nums, int k) {
        k = k % nums.length;
        //第一步：反转整个数组
        reverse(nums,0,nums.length - 1);
        //第二步：将数组分割为两个子数组，然后各自反转
        reverse(nums,0,k - 1);
        reverse(nums,k,nums.length - 1);
    }
    private void reverse(int[] arr, int left, int right){
        while(left < right){
            int temp = arr[left];
            arr[left] = arr[right];
            arr[right] = temp;
            left++;
            right--;
        }
    }
}
